/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Buscador;

import Bitacora.Guardar;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.DefaultListModel;

/**
 *
 * @author Karadak
 */



    
public class llenar_BD 
{
    // para hacer busquedas
    ArrayList<String> file_bd = new ArrayList();
    ArrayList<String> genero_bd = new ArrayList();
    ArrayList<String> nombre_bd = new ArrayList();
    ArrayList<String> compositor_bd = new ArrayList();
    ArrayList<String> compas_bd = new ArrayList();
    ArrayList<String> instrumento_bd = new ArrayList();
    ArrayList<String> estilo_bd = new ArrayList();
    
    ArrayList<String> resultado_b = new ArrayList();
    ArrayList<String> archivo_b = new ArrayList();
    
    

    public llenar_BD() 
    {
        genero_bd.clear();
        nombre_bd.clear();
        compositor_bd.clear();
        compas_bd.clear();
        instrumento_bd.clear();
        estilo_bd.clear();

    }
    
    public void lleno()
    {
        System.out.println("file "+file_bd.size() + " " +file_bd);
        
    }
    public void insertar_bd_S(String file, String genero, String nombre, String compositor,String compas,String instrumento,String estilo)
    {
       
        try 
        {
            if(!nombre_bd.contains(nombre))
            {
                
                /*
                Iterator comp = compositor.iterator();
                String cmp = "";
                while(comp.hasNext())
                {
                    cmp += " " + comp.next().toString();
                }
                  
                 
                //System.err.println("[BD] "+compositor.toString());
                
                
                Iterator inst = instrumento.iterator();
                String instr = "";
                while(inst.hasNext())
                {
                    instr += inst.next().toString();
                }
                */
                file_bd.add(file);
                nombre_bd.add(nombre);
                genero_bd.add(genero);                
                compositor_bd.add(compositor.toString());
                compas_bd.add(compas);
                instrumento_bd.add(instrumento.toString());
                estilo_bd.add(estilo);
                 
               
            }
            
            //metadatos();
        }
        catch(Exception er)
        {
            System.err.println("[insertarBD] exp "+er.getMessage());
        }
    }
    public void insertar_bd(String file, String genero, String nombre, ArrayList compositor,String compas,ArrayList instrumento,String estilo)
    {
       
        try 
        {
            if(!nombre_bd.contains(nombre))
            {
                
                /*
                Iterator comp = compositor.iterator();
                String cmp = "";
                while(comp.hasNext())
                {
                    cmp += " " + comp.next().toString();
                }
                  
                 
                //System.err.println("[BD] "+compositor.toString());
                
                
                Iterator inst = instrumento.iterator();
                String instr = "";
                while(inst.hasNext())
                {
                    instr += inst.next().toString();
                }
                */
                file_bd.add(file);
                nombre_bd.add(nombre);
                genero_bd.add(genero);                
                compositor_bd.add(compositor.toString());
                compas_bd.add(compas);
                instrumento_bd.add(instrumento.toString());
                estilo_bd.add(estilo);
                 
               
            }
            
            //metadatos();
        }
        catch(Exception er)
        {
            System.err.println("[insertarBD] exp "+er.getMessage());
        }
    }

    
    
    public String metadatos()
    {
        String contenido = "";
        
        try
        {
            Iterator<String> popf = file_bd.iterator();
            Iterator<String> popn = nombre_bd.iterator();
            Iterator<String> popg = genero_bd.iterator();
            Iterator<String> popc = compositor_bd.iterator();
            Iterator<String> popcz = compas_bd.iterator();
            Iterator<String> popi = instrumento_bd.iterator();
            Iterator<String> pope = estilo_bd.iterator();
            
            
            
            while(popf.hasNext())
            {
                contenido += "   <metadatos>\n";
                contenido += "      <file> "+ popf.next() +" </file> \n";
                contenido += "      <nombre> "+ popn.next() +" </nombre> \n";
                contenido += "      <genero> "+ popg.next() +" </genero> \n";
                contenido += "      <compositor> "+ popc.next() +" </compositor> \n";
                contenido += "      <compas> "+ popcz.next() +" </compas> \n";
                contenido += "      <instrumento> "+ popi.next() +" </instrumento> \n";
                contenido += "      <estilo> "+ pope.next() +" </estilo> \n";
                contenido += "  </metadatos>\n\n";
            }
            
            
            
            //System.out.println(contenido);
        }
        catch(Exception er)
        {
            System.err.println("[GENERAR METADATOS] "+er.getMessage());
        }
        
        return contenido;
    }
    
    public void guardar_xml(String direccion)
    {
        Guardar save = new Guardar();
        String data = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n\n" +"<proyecto> \n" + metadatos() + "</proyecto>";
        
        save.guardarArchivo(direccion, data);
    }
    
    
    public void buscar(int opcion, String texto)
    {
        //String salida = "";
        
        String f = "";
        int ac = 0;
        //ArrayList<String> resultado = new ArrayList();
        try
        {           
            
            switch(opcion)
            {
                case 0: //nombre
                    
                        Iterator<String> pop = nombre_bd.iterator();               
                        ac = 0;
                        while(pop.hasNext())
                        {
                            f = pop.next();
                            
                            //if(f.equals(texto))
                            if(f.contains(texto))
                            {
                                //resultado.add(f + "$" + ));
                                resultado_b.add(f);
                                //archivo_b.add(file_bd.get(nombre_bd.indexOf(f)));
                                archivo_b.add(file_bd.get(ac));
                            }  
                            ac++;
                        }
                    
                    break;
                    
                case 1: // Genero

                        Iterator<String> popg = genero_bd.iterator();                         
                        ac = 0;
                        while(popg.hasNext())
                        {
                            f = popg.next();
                            
                            //if(f.equals(texto))
                            if(f.contains(texto))
                            {                              
                                //resultado.add(f + "$" + file_bd.get(genero_bd.indexOf(f)));
                                resultado_b.add(f);
                                //archivo_b.add(file_bd.get(genero_bd.indexOf(f)));
                                archivo_b.add(file_bd.get(ac));
                            } 
                            ac++;
                        }
                    break;
                
                case 2: //Compas
                    
                        Iterator<String> popcz = compas_bd.iterator();                         
                        ac = 0;
                        while(popcz.hasNext())
                        {
                            f = popcz.next();
                            
                            if(f.contains(texto))
                            {                               
                                 resultado_b.add(f);
                                 archivo_b.add(file_bd.get(ac));                           
                            }
                            ac++;
                        }
                    break;
                   
                case 3: //Compositor 

                   
                    Iterator<String> popc = compositor_bd.iterator();                         
                        ac = 0;
                        while(popc.hasNext())
                        {
                            f = popc.next();                           
                            if(f.contains(texto))
                            {
                               
                               
                                //System.out.println(texto + " SI "+f);
                                //resultado.add(f + "$" + file_bd.get(compositor_bd.indexOf(f)));
                                resultado_b.add(f);
                                //archivo_b.add(file_bd.get(compositor_bd.indexOf(f)));
                                archivo_b.add(file_bd.get(ac));
                            }
                           ac++;
                        }
                    
                    break;
    
                case 4: //Instrumento 

                    
                    Iterator<String> popi = instrumento_bd.iterator();                         
                       ac = 0;
                        while(popi.hasNext())
                        {
                            f = popi.next();                            
                           
                            if(f.contains(texto))
                            {
                               
                                //resultado.add(f + "$" + file_bd.get(instrumento_bd.indexOf(f)));
                                resultado_b.add(f);
                                //archivo_b.add(file_bd.get(instrumento_bd.indexOf(f)));
                                archivo_b.add(file_bd.get(ac));
                                //System.out.println(texto + " SI "+f+ " [ind} "+file_bd.get(instrumento_bd.indexOf(f)));
                            }    
                            
                            ac++;
                            
                        }
                    break;
                    
                case 5: //Estilo 

                    Iterator<String> pope = estilo_bd.iterator();                         
                        ac = 0;
                        while(pope.hasNext())
                        {
                            f = pope.next();
                            System.out.println("ESTILO "+f);
                            if(f.contains(texto))
                            {                               
                                //resultado.add(f + "$" + file_bd.get(estilo_bd.indexOf(f)));
                                resultado_b.add(f);
                                //archivo_b.add(file_bd.get(estilo_bd.indexOf(f)));
                                archivo_b.add(file_bd.get(ac));
                            }
                            ac++;
                        }
                    break;  
                    
                default:
                    resultado_b.add("No hay informacion");
                    archivo_b.add("n/d");
            }
            
//            //Iterator<String> sacar = resultado.iterator();
//            while(sacar.hasNext())
//            {
//                String salida = sacar.next();
//                String [] v = salida.split("$");
//               
//                System.out.println("Archivo "+salida + " V "+v.length);
//            }
            
        }
        catch(Exception er)
        {
            System.err.println("[BUSCAR] exp "+er.getMessage());
        }
    }
    
    public DefaultListModel modelo()
    {
        DefaultListModel modelo = new DefaultListModel();
        try
        {
            Iterator<String> sacar = resultado_b.iterator();
            while(sacar.hasNext())
            {
                String salida = sacar.next();
               
               //modelo.add(resultado_b.indexOf(salida), salida);
               modelo.addElement(salida);
               //System.out.println("Archivo "+salida);
            }
        }
        catch(Exception er)
        {
            System.err.println("[MODELO] "+er);
        }
        return modelo;
        
    }
    
    public void limpiar_busqueda()
    {
        this.resultado_b.clear();
        this.archivo_b.clear();
    }
    /*
    public String get_archivo_asoc(String text)
    {
        String salida = "no hay resultados";
        try
        {
            int index = resultado_b.indexOf(text);
            //System.out.println("[B] "+text+ " CONTAINS "+resultado_b.contains(text));
            salida = archivo_b.get(index);
        }
        catch(Exception er)
        {
            
            System.err.println("[archivo asoc] "+er);
                    
        }
        return salida;
        
    }
    */
    
    public String get_archivo_asoc(int index)
    {
        String salida = "no hay resultados";
        try
        {
            //int index = resultado_b.indexOf(text);
            //System.out.println("[B] "+text+ " CONTAINS "+resultado_b.contains(text));
            salida = archivo_b.get(index);
            System.out.println("[B] "+archivo_b.get(index) + " | "+index);
        }
        catch(Exception er)
        {
            
            System.err.println("[archivo asoc] "+er);
                    
        }
        return salida;
        
    }
           
            
}
